package com.aganmall.dao;

import com.aganmall.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record); //根据主键更新,是选择性更新不为null的user信息

    int updateByPrimaryKey(User record);  //根据主键更新,更新user的全部信息

    int checkUsername(String username);

    int checkEmail(String email);

    //mybatis传递多个参数时需要注解@Param,写sql时需写注解中的对应的String
    User selectLogin(@Param("username") String username, @Param("password") String password);

    String selectQuestionByUsername(String username);

    int checkAnswer(@Param("username") String username, @Param("question") String question, @Param("answer") String answer);

    //update新的密码,返回生效的记录行数,(update返回值自带生效行数)
    int updatePasswordByUsername(@Param("username") String username, @Param("password") String password);

    //确保在登录状态下的重设密码,设的是指定userId的用户
    int checkPassword(@Param("password") String password,@Param("userId") Integer userId);

    //email绑定userId来check,即校验email是否已存在且不是该userId对应的email(因为在未修改该email之前,这个usrId对应的email肯定是存在的)
    int checkEmailByUserId(@Param("email") String email, @Param("userId") Integer userId);
}